/*
 * @Description:Client
 * 
 * @Author: rendc
 * 
 * @Date: 2025-03-19 11:18:53
 * 
 * @LastEditors: rendc
 * 
 * @LastEditTime: 2025-03-19 11:40:57
 */

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.ObjectOutputStream;
import java.io.Reader;
import java.net.Socket;
import java.util.List;
import java.util.ArrayList;
import java.util.Scanner;

public class Client {

  // 搭建TCP客户端
  // a.从键盘录入老师信息，录入格式：姓名-年龄-工资，遇quit结束录入，例如：zs-31-8900
  // tom-28-7893.5
  // ww-33-4536.5
  // ...
  // quit
  // b.将每行信息封装成老师对象，全部发送到服务器
  // c.发送成功后，收取从服务器返回的信息并输出
  // d.最后关闭客户端
  public static void main(String[] args) throws Exception {
    // 搭建Tcp客户端
    String ip = "127.0.0.1";
    int port = 8002;
    Socket client = new Socket(ip, port);
    System.out.println("客户端：启动成功");
    // 从键盘录入老师信息
    Scanner sc = new Scanner(System.in);
    // 定义集合存放老师信息
    List<Teacher> list = new ArrayList<>();
    // 录入老师信息
    System.out.println("客户端：请从键盘录入老师信息，录入格式：姓名-年龄-工资，遇\"quit\"结束录入，例如：zs-31-8900");
    // 定义变量接收键盘录入的数据
    String str = null;
    while ((str = sc.nextLine()) != null) {
      if ("quit".equals(str)) {
        break;
      }
      // 拆分字符串
      String[] strArr = str.split("[-]");
      // 创建对象
      String name = strArr[0];
      int age = Integer.parseInt(strArr[1]);
      double salary = Double.parseDouble(strArr[2]);
      // 使用全参构造器创建对象
      Teacher t = new Teacher(name, age, salary);
      // System.out.println(t);
      // 将老师对象添加到list中
      list.add(t);
    }
    // System.out.println("list:" + list.size());
    // 全部发送到服务器
    // 获取输出流 增强
    ObjectOutputStream oos = new ObjectOutputStream(client.getOutputStream());
    // 发送
    oos.writeObject(list);
    System.out.println("客户端：成功发送数据");
    // 发送成功后，收取从服务器返回的信息并输出
    // 获取输入流 - 增强流
    BufferedReader br = new BufferedReader(new InputStreamReader(client.getInputStream()));
    System.out.println("客户端：收到服务器的信息" + br.readLine());
    // 最后关闭客户端 - 关闭资源
    System.out.println("客户端：即将关闭");
    br.close();
    oos.close();
    client.close();
  }
}